//导入express包
const express = require('express');
//导入检测登录中间件
const CheckLogin = require('../../midleware/CheckLogin')
//导入events集合对象
const EventModel = require('../../models/EventModel')
//获取date-fns包的format方法
const { format } = require('date-fns')

//创建路由对象
const router = express.Router();

//响应首页
router.get('/', CheckLogin, (req, res) => {
    // //读取events集合下的全部文档
    // EventModel.find((err, data) => {
    //     //获取全部数据
    //     const arr = data
    //     //使用ejs渲染
    //     res.render('index', { arr, n: arr.length })
    // })
    //读取登录用户在events集合下的全部文档
    EventModel.find({ userId: req.session.user.userId }, (err, data) => {
        console.log(data)

        //获取全部数据
        const arr = data
        //使用ejs渲染
        res.render('index', { arr, n: arr.length })
    })
})

//处理用户添加事项
router.post('/add', CheckLogin, (req, res) => {
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //将用户填写的内容保存到数据库中
    EventModel.create({
        userId: req.session.user.userId,
        title: title,
        detail: detail,
        time: time
    }, (err, data) => {
        //使用ejs渲染(提醒用户添加成功)
        res.render('successRemind', { title: '添加事项成功', detail: '您的事项已成功添加到列表中。' })
    })
})

//根据_id来删除指定的文档
router.get('/delete/:_id', CheckLogin, (req, res) => {
    //获取_id
    const _id = req.params._id
    //根据_id来删除指定的文档
    EventModel.deleteOne({ _id: _id }, (err, data) => {
        //使用ejs渲染(提醒用户删除成功)
        res.render('successRemind', { title: '删除事项成功', detail: '您选择的事项已成功删除。' })
    })
})

//响应编辑事项页面
router.get('/change/:_id', CheckLogin, (req, res) => {
    //获取_id
    const _id = req.params._id
    //根据_id读取指定文档
    EventModel.findOne({ _id: _id }, (err, data) => {
        //使用ejs渲染(响应编辑事项页面)
        res.render('change', { _id: _id, title: data.title, detail: data.detail })
    })
})

//处理用户保存修改事项
router.post('/change/:_id', CheckLogin, (req, res) => {
    //获取_id
    const _id = req.params._id
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //修改文档中的内容
    EventModel.updateOne({ _id: _id }, {
        title: title,
        detail: detail,
        time: time
    }, (err, data) => {
        //使用ejs渲染(提醒用户修改成功)
        res.render('successRemind', { title: '修改事项内容成功', detail: '' })
    })
})

//数据暴露
module.exports = router;
